* @covers DeferredUpdates::addUpdate
* @covers DeferredUpdates::push
* @covers DeferredUpdates::doUpdates
- * @covers DeferredUpdates::execute
- * @covers DeferredUpdates::runUpdate
+ * @covers DeferredUpdates::handleUpdateQueue
+ * @covers DeferredUpdates::attemptUpdate
*/
public function testAddAndRun() {
$update = $this->getMockBuilder( DeferrableUpdate::class )
/**
* @covers DeferredUpdates::doUpdates
- * @covers DeferredUpdates::execute
+ * @covers DeferredUpdates::handleUpdateQueue
* @covers DeferredUpdates::addUpdate
*/
public function testDoUpdatesWeb() {
/**
* @covers DeferredUpdates::doUpdates
- * @covers DeferredUpdates::execute
+ * @covers DeferredUpdates::handleUpdateQueue
* @covers DeferredUpdates::addUpdate
*/
public function testDoUpdatesCLI() {
/**
* @covers DeferredUpdates::doUpdates
- * @covers DeferredUpdates::execute
+ * @covers DeferredUpdates::handleUpdateQueue
* @covers DeferredUpdates::addUpdate
*/
public function testPresendAddOnPostsendRun() {
}
/**
- * @covers DeferredUpdates::runUpdate
+ * @covers DeferredUpdates::attemptUpdate
*/
public function testRunUpdateTransactionScope() {
$this->setMwGlobals( 'wgCommandLineMode', false );
}
/**
- * @covers DeferredUpdates::runUpdate
+ * @covers DeferredUpdates::attemptUpdate
* @covers TransactionRoundDefiningUpdate::getOrigin
*/
public function testRunOuterScopeUpdate() {
$ran = 0;
DeferredUpdates::addUpdate( new TransactionRoundDefiningUpdate(
- function () use ( &$ran, $lbFactory ) {
- $ran++;
- $this->assertFalse( $lbFactory->hasTransactionRound(), 'No transaction' );
- } )
+ function () use ( &$ran, $lbFactory ) {
+ $ran++;
+ $this->assertFalse( $lbFactory->hasTransactionRound(), 'No transaction' );
+ } )
);
DeferredUpdates::doUpdates();
$this->assertEquals( [], $calls );
$dbw = wfGetDB( DB_MASTER );
- $dbw->onTransactionIdle( function () use ( &$calls, $callback2 ) {
+ $dbw->onTransactionCommitOrIdle( function () use ( &$calls, $callback2 ) {
DeferredUpdates::addCallableUpdate( $callback2 );
$this->assertEquals( [], $calls );
$calls[] = 'oti';
DeferredUpdates::tryOpportunisticExecute( 'run' );
$this->assertEquals( [ 'oti', 1, 2 ], $calls );
}
+
+ /**
+ * @covers DeferredUpdates::attemptUpdate
+ */
+ public function testCallbackUpdateRounds() {
+ $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
+
+ $fname = __METHOD__;
+ $called = false;
+ DeferredUpdates::attemptUpdate(
+ new MWCallableUpdate(
+ function () use ( $lbFactory, $fname, &$called ) {
+ $lbFactory->flushReplicaSnapshots( $fname );
+ $lbFactory->commitMasterChanges( $fname );
+ $called = true;
+ },
+ $fname
+ ),
+ $lbFactory
+ );
+
+ $this->assertTrue( $called, "Callback ran" );
+ }
}